iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 17
1
自我挑戰組

LINE BOT 新手村30日攻略系列 第 17 篇

Day17 口罩查詢系統 - 2

  • 分享至 

  • xImage
  •  

我們接續前一篇的內容,今天要將 Flex 版型建立起來,並完成 logger.py
口罩查詢系統 Github 連結

建立 Flex 版型

又來到建立 Flex 的時間了XDD
一樣來到 Flex Messge Simulator 建立 Carousel 或是 Bubble
因為 Carousel 是包含多個 Bubble ,所以只需要建立一個版型即可

目標成果如下
當然,也希望大家可以自己嘗試自己玩玩看

Hero

挑一張喜歡的圖片放進去
在 aspectRatio 的部分選擇適當的比例
因為我選的圖片是沒有背景顏色的,所以我在這裡設定了 backgroundColor

Body

首先是標題

接下來的區塊都會另外用 horizontal Box 隔開,之後方便塞入資料

而架構都相同,每個 Box 裡面存放兩個 text
一個是資料名稱,一個是資料內容

Footer

最後要在 Footer 建立一個 Button
這次要使用 Postback Action ,用來判斷是否要回傳地圖資訊

現在我們已經完成 Flex 版型設計囉~
接下來一樣找到右上角的 View as JSON

我們只需要將 contents 裡面的一個區段複製起來就可以囉~

將剛剛複製起來的檔案放到 data/json/Bubble.json
而 data/json/Card.json 的部分如下

{
    "type":"carousel",
    "contents":[
      
    ]
}

建立 logger.py

在開發專案的時候,常常會遇到 Bug
透過建立 log ,可以更方便了解哪裡出現問題

首先在 MAPPING 設定了各種類型訊息的顏色
在 python 中如果要輸出單行有顏色的字,可以用 \033[{顏色ID}m{字串}\033[0m
如果要完更多的話,可以參考這篇CSDN

import logging
from copy import copy
from logging import Formatter

MAPPING = {
    'DEBUG': 37,  # white
    'INFO': 36,  # cyan
    'WARNING': 33,  # yellow
    'ERROR': 31,  # red
    'CRITICAL': 41,  # white on red bg
}

PREFIX = '\033['
SUFFIX = '\033[0m'


class ColoredFormatter(Formatter):
    def __init__(self, patern):
        Formatter.__init__(self, patern)

    def format(self, record):
        colored_record = copy(record)
        levelname = colored_record.levelname
        seq = MAPPING.get(levelname, 37)  # default white
        colored_levelname = ('{0}{1}m{2}{3}') \
            .format(PREFIX, seq, levelname, SUFFIX)
        colored_record.levelname = colored_levelname
        return Formatter.format(self, colored_record)

# Create top level logger
logger = logging.getLogger("root")

# Add console handler using our custom ColoredFormatter
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
cf = ColoredFormatter("[%(name)s][%(levelname)s]  %(message)s")
ch.setFormatter(cf)
logger.addHandler(ch)

最後將 log 結果輸出到 log.log

# Add file handler
fh = logging.FileHandler('log.log')
fh.setLevel(logging.DEBUG)
ff = logging.Formatter(
    '[%(asctime)s] - [%(name)s] - [%(levelname)s] - %(message)s (%(filename)s:%(lineno)d)'
)
fh.setFormatter(ff)
logger.addHandler(fh)

# Set log level
logger.setLevel(logging.DEBUG)

if __name__ == '__main__':
    logger.debug('A debug message')
    logger.info('An info message')
    logger.warning('Something is not right.')
    logger.error('A Major error has happened.')
    logger.critical('Fatal error. Cannot continue')

到這邊,我們就順利建立好 logger.py 囉~
在下一篇,我們會將最後的步驟完成

後記

python 輸出顏色的字是真的很棒
而且透過顏色,很快就可以分辨訊息到底是什麼類型

下一篇終於要讓系統跑起來啦!
希望各位玩得開心~

參考資料

LINE Message Simulator
CSDN python 輸出顏色
口罩查詢系統 Github 連結


上一篇
Day16 口罩查詢系統 - 1
下一篇
Day18 口罩查詢系統 - 3
系列文
LINE BOT 新手村30日攻略 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言